package jdiy.sample.action;

import net.jdiy.core.*;

import java.util.Date;

/**
 * 留言和联系我们的Action
 */
public class guestbook extends JDiyAction {
    App app = App.get(); //获得JDiy App上下文
    Dao dao = app.getDao();//获得JDiy的默认数据库操作DAO

    /**
     * 此方法显示 guestbook留言列表
     */
    public void list() {
        int currentPage = app.getInt("page", 1);//获取当前页码（默认显示第一页数据）

        //每页显示5条记录(其中auditFlag=1条件用于仅把审核通过的留言显示出来)
        Args args = new Args("guestbook", "auditFlag=1 ORDER BY id DESC", 5, currentPage);
        Ls ls = dao.ls(args); //查询返回 guestbook 表中的多条记录.
        setAttr("list", ls); //将查询结果设置到请求中，以便在guestbook/list.jsp中输出。
        forward("/WEB-INF/view/guestbook/list.jsp");//forward到展现层页面．即将request请求转交页面去输出。
    }


    //提交留言的表单页面。
    public void add() {
        forward("/WEB-INF/view/guestbook/add.jsp");//直接forward到提交留言的页面（因为此action无需做任何事情）
    }

    //点击留言提交按钮后进到这个action来保存用户的留言。
    public void do_save() {

        Rs rs = getRs("guestbook", "gBook");//获取表单提交过来的数据并自动封包成一个Rs对象。
        rs.set("dtAdd", new Date());//设置留言时间

        dao.save(rs);//将提交的留言保存至数据库

        forward("/WEB-INF/view/guestbook/add_ok.jsp");//forward到展现层页面．即将request请求转交页面去输出。
        //上行foward由于没有离开此次提交请求，在页面上刷新一次，，库中会多出一条重复数据，
        // 改用下面的redirect方法即可（只不过您需要做额外的action来为用户显示'操作成功'的提示）：
        //redirect("xxx.jd")
        // 当然还有很多解决办法，如ajax提交，
        // 或者像招聘栏目中的“应聘简历”表单提交的示例，
        // 该示例中，resume简历表的主键定义为char(10),并由JDiy的主键生成器去维护，
        // 在提交之前的表单Action中就已经生成了主键值，则提交后的页面中刷新时并不会产生重复数据。

    }

    //联系我们（单篇文章内容）显示的Action
    public void contact() {
        Rs rs = dao.rs(new Args("info", "id='y0hg9i0mkb'"));//查询出[联系我们]这个栏目的数据库记录行
        setAttr("info", rs);//将rs对象设置到请求流中，以便页面输出

        forward("/WEB-INF/view/guestbook/contact.jsp"); //forward到展现层页面．即将request请求转交页面去输出。
    }
}
